package pl.agh.pp.zephyr.integration;

import pl.agh.pp.zephyr.logic.Engine;
import pl.agh.pp.zephyr.utils.LogPublisher;

/**
 * Modeluje kontroller miksera mcu. Zawiera metody wymagane dla wszystkich
 * implementacji.
 * */
public abstract class McuController extends LogPublisher implements
		H323Controller {

	private final Engine engine;

	public McuController(Engine engine) {
		super(McuController.class);
		this.engine = engine;
	}

	/**
	 * Wysłanie żądania połączenia pokoji.
	 * 
	 * @param homeAlias
	 *            - nazwa pokoju znajdującego się na tym mcu
	 * @param alias
	 *            - nazwa zdalnego pokoju
	 * @param ip
	 * 			  - ip zdalnego mcu
	 * @param
	 * 			  - port RTP zdalnego mcu
	 * 
	 * @throws - jak coś pójdzie nie tak
	 * @return true, jeśli mcu nie zrobiło problemów
	 * */
	public abstract boolean connectRooms(String homeAlias, String alias,
			String ip, String port) throws Exception;

	private String host, port;

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getPort() {
		return port;
	}

	public void setPort(String port) {
		this.port = port;
	}

	protected boolean active;

	/**
	 * Dodatkowa inicjalizacja
	 * */
	public void init() {
	}

	@Override
	public void destroy() {
		active = false;
	}
}
